package com.squirrel.auxiliary;

import com.squirrel.facade.Update;
import com.squirrel.service.CreateDeleteSql;
import com.squirrel.service.CreateUpdateSql;

import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Map;

/**
 * @author wangyan
 * 处理不同数据库数据类型
 */
public interface IDataTypeConversion {

    /**
     * 保存数据时候，数据类型转换
     *
     * @param ps
     * @param dataMedium
     * @param columnTypeMap 数据库字段类型
     * @return 需要保存的字段数量
     * @throws SQLException
     */
    int saveDataTypeConversion(PreparedStatement ps, Map dataMedium, Map<String, String> columnTypeMap) throws SQLException;

    /**
     * 更新数据时，数据类型转换
     *
     * @param ps
     * @param update
     * @param columnTypeMap
     * @throws SQLException
     */
    void updateDataTypeConversion(PreparedStatement ps, Update update, Map<String, String> columnTypeMap) throws SQLException;

    /**
     * 删除数据时候，数据类型转换
     *
     * @param ps
     * @param columnTypeMap
     * @param createDeleteSql
     * @throws SQLException
     */
    void deleteDataTypeConversion(PreparedStatement ps, Map<String, String> columnTypeMap, CreateDeleteSql createDeleteSql) throws SQLException;

}
